/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package helper;

import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import model.Problema;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

/**
 *
 * @author ST&T
 */
public class ProblemaHelper {

    public static final String NOM_ELEMENTO = "Problema";

    public static String getDocumento(Problema objetoVO) {
        Element rootElement = new Element(NOM_ELEMENTO);
        rootElement.addContent(getElemento(objetoVO));
        XMLOutputter salida = new XMLOutputter(Format.getCompactFormat());
        return salida.outputString(new Document(rootElement));
    }

    public static String getDocumento(List coleccionVOs) {
        Element rootElement = new Element(NOM_ELEMENTO);
        for (int i = 0; i < coleccionVOs.size(); i++) {
            Problema problema = (Problema) coleccionVOs.get(i);
            rootElement.addContent(getElemento(problema));
        }
        XMLOutputter salida = new XMLOutputter(Format.getCompactFormat());
        return salida.outputString(new Document(rootElement));
    }

    public static Element getElemento(Problema problema) {
        Element elemento = new Element(NOM_ELEMENTO);
        
        if (problema.getNombre() != null) {
            elemento.setAttribute("nombre", problema.getNombre());
        }
        return elemento;
    }

    public static Problema getInstancia(Document documento) {
        return getInstancia(documento.getRootElement().getChild(NOM_ELEMENTO));
    }

    public static Problema getInstancia(Element elemento) {
        
        Problema problema = new Problema();
        
        if (elemento.getAttributeValue("nombre") != null) {
            problema.setNombre(elemento.getAttributeValue("nombre"));
        }
        return problema;
    }

    public static List getInstancias(String cadenaXmlObjetos) throws Exception {
        try {
            SAXBuilder builder = new SAXBuilder();
            Document documento = builder.build(new StringReader(cadenaXmlObjetos));
            return getInstancias(documento);
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    public static List getInstancias(Document documento) {
        List problemas = new ArrayList();
        List elementos = documento.getRootElement().getChildren(NOM_ELEMENTO);
        for (int i = 0; i < elementos.size(); i++) {
            Element elemento = (Element) elementos.get(i);
            problemas.add(getInstancia(elemento));
        }
        return problemas;
    }
}